package modelo;

import static javax.persistence.GenerationType.IDENTITY;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name = "localidad", catalog = "eventos_compartidos")
public class Localidad implements java.io.Serializable {

	private static final long serialVersionUID = -2836148599733836443L;

	private Integer idLocalidad;
	private Provincia provincia;
	private String nombreLocalidad;
	private Set<Barrio> barrios = new HashSet<Barrio>(0);

	public Localidad() {
	}

	public Localidad(Provincia provincia, String nombreLocalidad) {
		this.provincia = provincia;
		this.nombreLocalidad = nombreLocalidad;
	}

	public Localidad(Provincia provincia, String nombreLocalidad,
			Set<Barrio> barrios) {
		this.provincia = provincia;
		this.nombreLocalidad = nombreLocalidad;
		this.barrios = barrios;
	}

	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "idLocalidad", unique = true, nullable = false)
	public Integer getIdLocalidad() {
		return this.idLocalidad;
	}

	public void setIdLocalidad(Integer idLocalidad) {
		this.idLocalidad = idLocalidad;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "idProvincia", nullable = false)
	public Provincia getProvincia() {
		return this.provincia;
	}

	public void setProvincia(Provincia provincia) {
		this.provincia = provincia;
	}

	@Column(name = "nombreLocalidad", nullable = false, length = 500)
	public String getNombreLocalidad() {
		return this.nombreLocalidad;
	}

	public void setNombreLocalidad(String nombreLocalidad) {
		this.nombreLocalidad = nombreLocalidad;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "localidad")
	public Set<Barrio> getBarrios() {
		return this.barrios;
	}

	public void setBarrios(Set<Barrio> barrios) {
		this.barrios = barrios;
	}

}